class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def show (self):
        print(self.name,"的年龄是",self.age)
class Student(Person):
    def __init__ (self, name, age,stunum):
        super().__init__(name,age)  #调用父类已有的属性,这里调用父类的属性时，不需要传入self参数
        self.stunum = stunum  #这里是因为父类没有，所以自己赋值

    def show (self):
        super().show() #调用了父类的show方法，之后再自己添加其他
        print("我来自XXX大学，学号是：",self.stunum)
class Doctor(Person):
    def __init__ (self, name, age,worknum):
        super().__init__(name,age)  #调用父类已有的属性
        self.worknum = worknum  #这里是因为父类没有，所以自己赋值

    def show (self):
        #方法重写可以不用调用父类的，也可以直接全部重写
        print(self.name,",他的年龄是",self.age,"工号是：",self.worknum)

stu1=Student("小小","18","10001")
stu1.show ()
doc1=Doctor("大大","26","10012")
doc1.show ()


'''
对于object类中自带的方法进行重写
'''
class Phone:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def __str__(self):
        return '这是一个手机，具有name和price属性'

Pho=Phone("huawei",2088)
print(Pho)
print(Pho.name) #直接写对对象名，或者对象调用属性都可以